import subprocess

def copy_until_100mb(input_file_path, output_file_path, chunk_size=8384):
    """
    从输入文件复制数据到输出文件，直到复制的总字节数超过100MB

    参数:
    input_file_path: 输入文件路径
    output_file_path: 输出文件路径
    chunk_size: 每次读取的字节数，默认8192字节
    """
    # 100MB = 100 * 1024 * 1024 字节
    max_bytes = 100 * 1024 * 1024 
    total_bytes_copied = 0
    cur_index = 10000000
    cur_index = 0
    try:
        with open(input_file_path, 'rb') as input_file, open(output_file_path, 'wb') as output_file:
            while total_bytes_copied <= max_bytes:
                # 从输入文件读取数据块
                input_file.seek(0)
                data = input_file.read(chunk_size)

                # 修改数据中的特定字节
                if len(data) > (8384-11):  # 确保索引有效
                    data_list = bytearray(data)
                    data_list[8384-3] = cur_index
                    data = bytes(data_list)
                cur_index = cur_index + 1
                if cur_index > 255:  # 索引范围在0-255之间
                    cur_index = 0

                # 如果没有更多数据可读取，则停止
                if not data:
                    break

                # 检查是否加上当前数据块会超过100MB
                if total_bytes_copied + len(data) > max_bytes:
                    # 只写入部分数据以确保总大小刚好超过100MB
                    bytes_needed = max_bytes - total_bytes_copied + 1
                    data = data[:bytes_needed]

                # 将数据写入输出文件
                output_file.write(data)
                total_bytes_copied += len(data)

        print(f"复制完成，总共复制了 {total_bytes_copied} 字节 ({total_bytes_copied / (1024*1024):.2f} MB)")

    except FileNotFoundError:
        print(f"错误：找不到输入文件 {input_file_path}")
    except PermissionError:
        print(f"错误：没有权限访问文件")
    except Exception as e:
        print(f"复制过程中发生错误: {e}")

# 使用示例
if __name__ == "__main__":
    input_file = "data/data1.bin"
    output_file = "data/output_data1.bin"
    copy_until_100mb(input_file, output_file)

    #subprocess.run(["python.exe", r"./parse_xiaoma_data.py", r"C:\Users\admin\Desktop\data", "5"])
